<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>天气案例 监视属性</title>
        <!-- 引入Vue -->
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <body>
        <div id="root">
            <h2>监视属性watch</h2>
            <p>1. 当被监视的属性变化时，回调函数handler自动调用，进行相关操作。</p>
            <p>2. 坚实的属性必须存在，才能进行监视！！</p>
            <p>3. 监视的两种写法：</p>
            <p>3.1 new Vue时传入warch配置</p>
            <p>3.2 通过vm.$warch监视</p>
            <h2>今天天气很{{info}}</h2>
            <button @click="changeWeather">切换天气</button>
        </div>
        <script type="text/javascript">
            Vue.config.productionTip = false    // 阻止Vue在启动时生成生产提示

            // 创建Vue实例，开端
            const vm = new Vue({
                el: '#root', // el用于指定当前Vue实例为哪个容器服务，值通常为css选择器字符串。
                data: {     // data中用于存储数据，数据供el指定的容器去使用
                    isHot: false
                },
                computed: {
                    info: function() {
                        return this.isHot ? '炎热' : '凉爽'
                    }
                },
                methods: {
                    changeWeather(){
                        this.isHot = !this.isHot
                    }
                },
                // 第一种监视方法
                watch: {
                    // 初始化时让handler调用一下
                    // immediate: true,
                    // 当isHot属性发生改变，会触发vue的handler函数
                    // isHot: {
                        // handler(newValue, oldValue){
                            // console.log("isHot从" + oldValue + "修改为" + newValue)
                        // }
                    // },
                    info: {
                        handler(newValue, oldValue){
                            console.log("info从" + oldValue + "修改为" + newValue)
                        }
                    }
                }
            })

            // 第2中监视方法
            vm.$watch('isHot', {
                immediate: true,
                handler(newValue, oldValue){
                    console.log("isHot从" + oldValue + "修改为" + newValue)
                }
            })
        </script>
    </body>
</html>
